package com.eddie.interator;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * 通过传入对应的容器集合，去迭代每个容器中的所有数据
 * 该类也可以只用在客户端，这里相当于是个打印工具
 * @author Eddie
 * @date 2022/08/03 22:31
 **/
public class OutPutImpl {
    //学院集合
    private final List<College> collegeList;

    //通过构造器传入容器集合
    public OutPutImpl(List<College> colleges) {
        this.collegeList = colleges;
    }

    //遍历所有学院，然后调用printDepartment 输出各个学院的系
    public void printCollege() {
        //从collegeList取出所有的学院。java中的List已经实现了I  terator
        Iterator<College> iterator = collegeList.iterator();
        while (iterator.hasNext()) {
            //取出一个学院
            College college = iterator.next();
            System.out.println(college.getName());
            //获取当前学院的迭代器，放入打印系的方法中，在该方法通过该迭代器打印该学院的所有系
            printDepartment(college.createIterator());
        }
    }

    //输出学院输出系
    public void printDepartment(Iterator<Object> iterator) {
        while (iterator.hasNext()) {
            Department next = (Department) iterator.next();
            System.out.println(next.getDesc());
        }
    }
}
